﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;

namespace devoirBD2
{
    public class FournisseurTable
    {
        private static FournisseurTable instance;
        private List<Fournisseur> fournisseurs;
        private bool loaded;

        private FournisseurTable()
        {
            fournisseurs = new List<Fournisseur>();
            loaded = false;
        }

        public static FournisseurTable getInstance()
        {
            if (instance == null)
            {
                instance = new FournisseurTable();
            }

            return instance;
        }

        public List<Fournisseur> getFournisseurs()
        {
            return fournisseurs;
        }
        public List<Fournisseur> getFournisseurs(string nomFournisseur, string adresse, string ville, string province, string pays, string codePostal, string telephone)
        {
            List<Fournisseur> arrayFournisseurs = new List<Fournisseur>();

            for (int i = 0; i < fournisseurs.Count; i++)
            {
                if (fournisseurs[i].compareFour(nomFournisseur, adresse, ville, province, pays, codePostal, telephone))
                {
                    arrayFournisseurs.Add(fournisseurs[i]);
                }
            }
            return arrayFournisseurs;
        }
       
        public void loadFournisseur()
        {
            loaded = true;
            fournisseurs.Clear();

            string query = "SELECT * FROM fournisseur order by nomFournisseur";

            Bd bd = Bd.getInstance();

            bd.openConnection();

            OracleDataReader dr = bd.executeReader(query);

            while (dr.Read())
            {
                Fournisseur cmd = new Fournisseur(Bd.valideLong(dr["idfournisseur"]),
                                                  Bd.valideString(dr["nomfournisseur"]),
                                                  Bd.valideString(dr["adresse"]),
                                                  Bd.valideString(dr["ville"]),
                                                  Bd.valideString(dr["province"]),
                                                  Bd.valideString(dr["pays"]),
                                                  Bd.valideString(dr["codePostal"]),
                                                  Bd.valideString(dr["telephone"]));

                fournisseurs.Add(cmd);
            }

            bd.closeConnection();
        }

        public bool isLoaded()
        {
            return loaded;
        }
    }
}
